#include"NamedPipe.hpp"

int main()
{
    NamedPipe named_pipe(filename);
    //创建管道
    named_pipe.Create();
    //打开
    named_pipe.OpenForRead();
    //读
    std::string message;
    while(true)
    {
        bool res = named_pipe.Read(&message);
        if(!res) break;
        std::cout <<"client say@ " << message << std::endl;
    }

    //关闭管道
    named_pipe.Close();
    //移除管道
    named_pipe.Remove();
    return 0;
}



// #include"common.hpp"
// int main()
// {
//     //创建命名管道
//     int n = mkfifo(filename.c_str() , mode);//所传的文件名没有路劲就默认在当前路径下查找
//     if(n == 0)//创建成功
//     {   
//         std::cout << " 创建命名管道成功" <<std::endl;
//     }   
//     else 
//     {
//         perror("mkfifo");
//         exit(1);
//     }

//     //与普通文件一样，打开、关闭即可
//     int fd = open(filename.c_str() , O_RDONLY);
//     if(fd < 0)
//     {
//         perror("open");
//         exit(2);
//     }
//     std::cout << "open file success" <<std::endl;

//     //通信，服务端读取数据，需要知道用户的请求
//     char buffer[SIZE];
//     while(true)
//     {
//         buffer[0]=0;//置空
//         ssize_t num = read(fd , buffer , sizeof(buffer)-1); //最后一个空间我们手动放 \0
//         if(num > 0)
//         {
//             buffer[num]=0;//手动在字符串末尾加 \0
//             std::cout << "client sys# " << buffer <<std::endl;
//         }
//         else if(num == 0)//写端关闭，读端会读到文件结尾，即0
//         {
//             std::cout <<"clent quit , so server quit~" <<std::endl;
//             break;
//         }
//         std::cout << "num: " <<num << std::endl;
//     }

//     //关闭文件
//     close(fd);
//     //使用完需要关闭命名管道文件
//     int m = unlink(filename.c_str());
//     if(m==0)
//     {
//         std::cout << "关闭命名管道成功" << std::endl;
//     }
//     else{
//         std::cout << "关闭命名管道失败" <<std::endl;
//     }
//     return 0;
// }